package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	/*
				输入和输出：
					fmt包：输入，输出（都是相对于计算机而言的）

				输出：
					Print() // 打印
					Printf() // 格式化打印
					Println() // 打印之后换行

				格式化打印占位符：
					%v: 原样输出 （打印单个字符时，结果是数字）
					%T: 打印类型
					%t: bool类型
					%s: 字符串
					%f: 浮点
					%d: 10 进制的整数
					%b: 2 进制的整数
					%o: 8 进制的整数
					%x: 16 进制
						%x: 0~9,a~f
						%X: 0~9,A~F
					%c: 打印字符
					%p: 打印地址
		            %q: 将字符串按照 Go 语法格式化为带引号的字符串。它会自动转义字符串中的特殊字符，并给字符串添加双引号，以使其符合 Go 语法。
					。。。
				输入：
					Scan()
					Scanf()
					Scanln()

				bufio包：文件读写
	*/
	a := 100           // int
	b := 3.14          // float
	c := true          // bool
	d := "Hello World" // string
	e := `Ruby`        // string
	f := 'A'
	fmt.Printf("%T,%b\n", a, a)
	fmt.Printf("%T,%f\n", b, b)
	fmt.Printf("%T,%t\n", c, c)
	fmt.Printf("%T,%s\n", d, d)
	fmt.Printf("%T,%s\n", e, e)
	fmt.Printf("%T,%d,%c\n", f, f, f) // int32, 65, A
	fmt.Printf("%v\n", f)             // 65

	fmt.Println("----------------------------------")

	var x int
	var y float64
	fmt.Println("请输入一个整数和一个浮点数：")
	fmt.Scanln(&x, &y) // 读取数值赋给x, y
	fmt.Printf("x 的数值为：%d，y 的数值为：%f\n", x, y)

	fmt.Scanf("%d %f", &x, &y)
	fmt.Printf("x 的数值为：%d，y 的数值为：%f\n", x, y)

	fmt.Println("-----------------------------------")

	fmt.Println("请输入一个字符串")
	reader := bufio.NewReader(os.Stdin) //os.Stdin 表示标准输入
	s1, err := reader.ReadString('\n')
	if err != nil {
		fmt.Println("err:", err)
		return
	}
	fmt.Println("读到的数据是: ", s1)
}
